flash core engine by Dinesh [closed]

Posted by hdinesh on Stack Overflow See other posts from Stack Overflow or by hdinesh
Published on 2010-04-08T07:43:13Z Indexed on 2010/04/08 8:13 UTC
Read the original article Hit count: 568

Filed under:

This post was a dump of the following code (without the highlights). No question, just a dump. Please update this q. with a real question to have it reopened. You (the asker) risk to be flagged as spammer (if not already) and a bad reputation. This is a q/a site, not a site to promote your own code libraries.

package facers {
 import flash.display.*;
 import flash.events.*;
 import flash.geom.ColorTransform;
 import flash.utils.Dictionary; 

 import org.papervision3d.cameras.*;
 import org.papervision3d.scenes.*;
 import org.papervision3d.objects.*;
 import org.papervision3d.objects.special.*;
 import org.papervision3d.objects.primitives.*;
 import org.papervision3d.materials.*;
 import org.papervision3d.events.FileLoadEvent;
 import org.papervision3d.materials.special.*;
 import org.papervision3d.materials.shaders.*;
 import org.papervision3d.materials.utils.*;
 import org.papervision3d.lights.*;
 import org.papervision3d.render.*;
 import org.papervision3d.view.*;
 import org.papervision3d.events.InteractiveScene3DEvent;
 import org.papervision3d.events.*;
 import org.papervision3d.core.utils.*;
 import org.papervision3d.core.geom.renderables.Vertex3D;

 import caurina.transitions.*;

 public class Main extends Sprite {

  public var viewport    :BasicView;  
  public var displayObject :DisplayObject3D;
  private var light   :PointLight3D;
  private var shadowPlane  :Plane; 
  private var dataArray  :Array;
  private var material  :BitmapFileMaterial;

  private var planeByContainer :Dictionary = new Dictionary();

  private var paperSize :Number = 0.5;
  private var cloudSize :Number = 1500;
  private var rotSize   :Number = 360;
  private var maxAlbums :Number = 50;
  private var num       :Number = 0;

  public function Main():void {
   trace("START APPLICATION");

   viewport = new BasicView(1024, 690, true, true, CameraType.FREE);
   viewport.camera.zoom = 50;

   viewport.camera.extra = { goPosition: new DisplayObject3D(),goTarget:   new DisplayObject3D() };

   addChild(viewport);

   displayObject = new DisplayObject3D();
   viewport.scene.addChild(displayObject);

   createAlbum();

   addEventListener(Event.ENTER_FRAME, onRenderEvent);
  } 

  private function createAlbum() {
   dataArray = new Array("images/thums/pic1.jpg", "images/thums/pic2.jpg", "images/thums/pic3.jpg", "images/thums/pic4.jpg", "images/thums/pic5.jpg", "images/thums/pic6.jpg", "images/thums/pic7.jpg", "images/thums/pic8.jpg", "images/thums/pic9.jpg", "images/thums/pic10.jpg", "images/thums/pic1.jpg", "images/thums/pic2.jpg", "images/thums/pic3.jpg", "images/thums/pic4.jpg", "images/thums/pic5.jpg", "images/thums/pic6.jpg", "images/thums/pic7.jpg", "images/thums/pic8.jpg", "images/thums/pic9.jpg", "images/thums/pic10.jpg");
   for (var i:int = 0; i < dataArray.length; i++) {
    material = new BitmapFileMaterial(dataArray[i]);
    material.doubleSided = true;
    material.addEventListener(FileLoadEvent.LOAD_COMPLETE, loadMaterial);
   }
  }  

  public function loadMaterial(event:Event) {
   var plane:Plane = new Plane(material, 300, 180);      
   displayObject.addChild(plane);

   var _x:int = Math.random() * cloudSize - cloudSize/2;
   var _y:int = Math.random() * cloudSize - cloudSize/2;
   var _z:int = Math.random() * cloudSize - cloudSize/2;
   var _rotationX:int = Math.random() * rotSize;
   var _rotationY:int = Math.random() * rotSize;
   var _rotationZ:int = Math.random() * rotSize;

   Tweener.addTween(plane, { x:_x, y:_y, z:_z, rotationX:_rotationX, rotationY:_rotationY, rotationZ:_rotationZ, time:5, transition:"easeIn" } );
  }

  protected function onRenderEvent(event:Event):void { 
   var rotY: Number = (mouseY-(stage.stageHeight/2))/(900/2)*(1200);
   var rotX: Number = (mouseX-(stage.stageWidth/2))/(600/2)*(-1200);
   displayObject.rotationY = viewport.camera.x + (rotX - viewport.camera.x) / 50;
   displayObject.rotationX = viewport.camera.y + (rotY - viewport.camera.y) / 30;

   viewport.singleRender();
  }
 } 
}






package designLab.events {
 import flash.display.BlendMode;
 import flash.display.Sprite;
 import flash.events.Event;
 import flash.filters.BlurFilter;

 // Import designLab
 import designLab.layer.IntroLayer;
 import designLab.shadow.ShadowCaster;
 import designLab.utils.LayerConstant;

 // Import Papervision3D
 import org.papervision3d.cameras.*;
 import org.papervision3d.scenes.*;
 import org.papervision3d.objects.*;
 import org.papervision3d.objects.special.*;
 import org.papervision3d.objects.primitives.*;
 import org.papervision3d.materials.*;
 import org.papervision3d.materials.special.*;
 import org.papervision3d.materials.shaders.*;
 import org.papervision3d.materials.utils.*;
 import org.papervision3d.lights.*;
 import org.papervision3d.render.*;
 import org.papervision3d.view.*;
 import org.papervision3d.events.InteractiveScene3DEvent;
 import org.papervision3d.events.*;
 import org.papervision3d.core.utils.*;
 import org.papervision3d.core.geom.renderables.Vertex3D;

 public class CoreEnging extends Sprite { 
  public var viewport    :BasicView;   // Create BasicView   
  public var displayObject :DisplayObject3D; // Create DisplayObject
  public var shadowCaster  :ShadowCaster;  // Create ShadowCaster
  private var light   :PointLight3D;  // Create PointLight
  private var shadowPlane  :Plane;    // Create Plane  

  private var layer    :LayerConstant;  // Create constant resource layer 
  private static var instance :CoreEnging;  // Create CoreEnging class static instance 

  // CoreEnging class static instance mathod function
  public static function getinstance() {   
   if (instance != null)
   return instance;
   else {
    instance = new CoreEnging();
    return instance;
   }
  }

  // CoreEnging constrictor
  public function CoreEnging () {
   trace("INFO: Design Lab Application : Core Enging v0.1");

   layer = new LayerConstant();

   viewport = new BasicView(900, 600, true, true, CameraType.FREE); // pass the width, height, scaleToStage, interactive, cameraType to BasicView
   viewport.camera.zoom = 100; // Define the zoom level of camera
   addChild(viewport);

   createFloor(); // Create the floor 

   displayObject = new DisplayObject3D();  // Create new instance of DisplayObject 
   viewport.scene.addChild(displayObject); // Add the DisplayObject to the BasicView 

   light = new PointLight3D();  // Create new instance of PointLight
   light.z = -50; // Position the Z of create instance  
   light.x = 0; //Position the X of create instance
   light.rotationZ = 45; //Position the rotation angel of the Z of create instance
   light.y = 500; //Position the Y of create instance

   shadowCaster = new ShadowCaster("shadow", 0x000000, BlendMode.MULTIPLY, .1, [new BlurFilter(20, 20, 1)]); // pass shadowcaster name, color, blend mode, alpha and filters
   shadowCaster.setType(ShadowCaster.SPOTLIGHT); // Define the shadow type

   addEventListener(Event.ENTER_FRAME, onRenderEvent); // Add frame render event
  } 

  // Start create floor
  public function createFloor() {
   var spr:Sprite = new Sprite(); // Create Sprite
   spr.graphics.beginFill(0xFFFFFF); // Define the fill color for sprite
   spr.graphics.drawRect(0, 0, 600, 600); // Define the X, Y, width, height of the sprite 

   var sprMaterial:MovieMaterial = new MovieMaterial(spr, true, true, true); //Create a texture from an existing sprite instance

   shadowPlane = new Plane(sprMaterial, 2000, 2000, 1, 1); // create new instance of the Plane and pass the texture material, width, height, segmentsW and segmentsH
   shadowPlane.rotationX = 80; //Position the rotation angel of the X of Plane
   shadowPlane.y = -200; //Position the Y of Plane
   viewport.scene.addChild(shadowPlane); // Add the Plane to the BasicView   
  }

  // switch method function of the page layer control 
  public function addLayer(type:String) {
   switch (type) {
    case layer.INTRO:
    var intro:IntroLayer = new IntroLayer();
    break;
   }   
  }

  // Create get mathod function for DisplayObject  
  public function getDisplayObject():DisplayObject3D {
   return displayObject;
  }

  // Create get mathod function for BasicView
  public function getViewport():BasicView {
   return viewport;
  }

  // Rendering function
  protected function onRenderEvent(event:Event):void { 
   var rotY: Number = (mouseY-(stage.stageHeight/2))/(900/2)*(1200);
   var rotX: Number = (mouseX-(stage.stageWidth/2))/(600/2)*(-1200);
   displayObject.rotationY = viewport.camera.x + (rotX - viewport.camera.x) / 50;
   displayObject.rotationX = viewport.camera.y + (rotY - viewport.camera.y) / 30;

   // Remove the shadow
   shadowCaster.invalidate();

   // create new shadow on DisplayObject move
   shadowCaster.castModel(displayObject, light, shadowPlane);

   viewport.singleRender();
  }
 } 
}





package designLab.layer 
{
 import flash.display.Sprite;
 import flash.events.Event;

 // Import designLab
 import designLab.materials.iBusinessCard; 
 import designLab.events.CoreEnging;

 // Import Papervision3D
 import org.papervision3d.objects.primitives.Cube; 
 import org.papervision3d.materials.ColorMaterial; 
 import org.papervision3d.materials.MovieMaterial;

 public class IntroLayer 
 {  
  // IntroLayer constrictor
  public function IntroLayer() 
  {
   trace("INFO: Load Intro layer");   

   var indexDP:DP_index = new DP_index(); //Create the library MovieClip
   var blackMaterial:MovieMaterial = new MovieMaterial(indexDP, true); //Create a texture from an existing library MovieClip instance
   blackMaterial.smooth = true;
   blackMaterial.doubleSided = false;   

   var mycolor:ColorMaterial = new ColorMaterial(0x000000); //Create solid color material

   var mycard:iBusinessCard = new iBusinessCard(blackMaterial, blackMaterial, mycolor, 372, 10, 207); // Create custom 3D cube object to pass the Front, Back, All, CubeWidth, CubeDepth and CubeHeight
   CoreEnging.getinstance().getDisplayObject().addChild(mycard.create3DCube()); // Add the custom 3D cube to the DisplayObject   
  } 
 } 
}




package designLab.materials 
{
 import flash.display.*;
 import flash.events.*;

 // Import Papervision3D
 import org.papervision3d.materials.*;
 import org.papervision3d.materials.utils.MaterialsList;
 import org.papervision3d.objects.primitives.Cube; 

 public class iBusinessCard extends Sprite
 {  
  private var materialsList :MaterialsList;
  private var cube   :Cube;  
  private var Front   :MovieMaterial = new MovieMaterial();
  private var Back   :MovieMaterial = new MovieMaterial();
  private var All    :ColorMaterial = new ColorMaterial();
  private var CubeWidth  :Number;
  private var CubeDepth  :Number;
  private var CubeHeight  :Number;  

  public function iBusinessCard(Front:MovieMaterial, Back:MovieMaterial, All:ColorMaterial, CubeWidth:Number, CubeDepth:Number, CubeHeight:Number) 
  {
   setFront(Front);
   setBack(Back);
   setAll(All);
   setCubeWidth(CubeWidth);
   setCubeDepth(CubeDepth);
   setCubeHeight(CubeHeight);   
  } 
  public function create3DCube():Cube {
   materialsList = new MaterialsList();
   materialsList.addMaterial(Front, "front");
   materialsList.addMaterial(Back, "back");
   materialsList.addMaterial(All, "left");
   materialsList.addMaterial(All, "right");
   materialsList.addMaterial(All, "top");
   materialsList.addMaterial(All, "bottom");

   cube = new Cube(materialsList, CubeWidth, CubeDepth, CubeHeight);
   cube.x = 0;
   cube.y = 0;
   cube.z = 0;
   cube.rotationY = 180;

   return cube;
  }
  public function setFront(Front:MovieMaterial) {
   this.Front = Front;   
  }
  public function getFront():MovieMaterial {
   return Front;
  }
  public function setBack(Back:MovieMaterial) {
   this.Back = Back;   
  }
  public function getBack():MovieMaterial {
   return Back;
  }
  public function setAll(All:ColorMaterial) {
   this.All = All;   
  }
  public function getAll():ColorMaterial {
   return All;
  }
  public function setCubeWidth(CubeWidth:Number) {
   this.CubeWidth = CubeWidth;   
  }
  public function getCubeWidth():Number {
   return CubeWidth;
  }
  public function setCubeDepth(CubeDepth:Number) {
   this.CubeDepth = CubeDepth;   
  }
  public function getCubeDepth():Number {
   return CubeDepth;
  }
  public function setCubeHeight(CubeHeight:Number) {
   this.CubeHeight = CubeHeight;   
  }
  public function getCubeHeight():Number {
   return CubeHeight;
  }
 } 
}






package designLab.shadow {
 import flash.display.Sprite;
 import flash.filters.BlurFilter;
 import flash.geom.Point;
 import flash.geom.Rectangle;
 import flash.utils.Dictionary;

 import org.papervision3d.core.geom.TriangleMesh3D;
 import org.papervision3d.core.geom.renderables.Triangle3D;
 import org.papervision3d.core.geom.renderables.Vertex3D;
 import org.papervision3d.core.math.BoundingSphere;
 import org.papervision3d.core.math.Matrix3D;
 import org.papervision3d.core.math.Number3D;
 import org.papervision3d.core.math.Plane3D;
 import org.papervision3d.lights.PointLight3D;
 import org.papervision3d.materials.MovieMaterial;
 import org.papervision3d.objects.DisplayObject3D;
 import org.papervision3d.objects.primitives.Plane;

 public class ShadowCaster
 {
  private var vertexRefs:Dictionary;
  private var numberRefs:Dictionary;
  private var lightRay:Number3D = new Number3D()
  private var p3d:Plane3D = new Plane3D();
  public var color:uint = 0;
  public var alpha:Number = 0;
  public var blend:String = "";
  public var filters:Array;
  public var uid:String;
  private var _type:String = "point";
  private var dir:Number3D;
  private var planeBounds:Dictionary;
  private var targetBounds:Dictionary;
  private var models:Dictionary;  

  public static var DIRECTIONAL:String = "dir";
  public static var SPOTLIGHT:String = "spot";  

  public function ShadowCaster(uid:String, color:uint = 0, blend:String = "multiply", alpha:Number = 1, filters:Array=null)
  {
   this.uid = uid;
   this.color = color;
   this.alpha = alpha;
   this.blend = blend; 
   this.filters = filters ? filters : [new BlurFilter()];
   numberRefs = new Dictionary(true);
   targetBounds = new Dictionary(true);
   planeBounds = new Dictionary(true);
   models = new Dictionary(true);
  }

  public function castModel(model:DisplayObject3D, light:PointLight3D, plane:Plane, faces:Boolean = true, cull:Boolean = false):void{

   var ar:Array;
   if(models[model])
   {
    ar = models[model];
   }else{
    ar = new Array();
    getChildMesh(model, ar);
    models[model] = ar;
   }   

   var reset:Boolean = true;

   for each(var t:TriangleMesh3D in ar){
    if(faces)
     castFaces(light, t, plane, cull, reset);
    else
     castBoundingSphere(light, t, plane, 0.75, reset);
    reset = false;
   }

  }

  private function getChildMesh(do3d:DisplayObject3D, ar):void{
   if(do3d is TriangleMesh3D)
    ar.push(do3d);

   for each(var d:DisplayObject3D in do3d.children)
    getChildMesh(d, ar);
  }

  public function setType(type:String="point"):void{
   _type = type;
  }
  public function getType():String{
   return _type;
  }

  public function castBoundingSphere(light:PointLight3D, target:TriangleMesh3D, plane:Plane, scaleRadius:Number=0.8, clear:Boolean = true):void{
   var planeVertices:Array = plane.geometry.vertices;

   //convert to target space?
   var world:Matrix3D = plane.world;
   var inv:Matrix3D = Matrix3D.inverse(plane.transform);

   var lp:Number3D = new Number3D(light.x, light.y, light.z);
   Matrix3D.multiplyVector(inv, lp);

   p3d.setNormalAndPoint(plane.geometry.faces[0].faceNormal, new Number3D());

   var b:BoundingSphere = target.geometry.boundingSphere;


   var bounds:Object = planeBounds[plane];
   if(!bounds){
    bounds = plane.boundingBox();
    planeBounds[plane] = bounds;
   }


   var tbounds:Object = targetBounds[target];
   if(!tbounds){
    tbounds = target.boundingBox();
    targetBounds[target] = tbounds;
   }


   var planeMovie:Sprite = Sprite(MovieMaterial(plane.material).movie);
   var movieSize:Point = new Point(planeMovie.width, planeMovie.height);

   var castClip:Sprite = getCastClip(plane);
    castClip.blendMode = this.blend;
    castClip.filters = this.filters;
    castClip.alpha = this.alpha;

   if(clear)
    castClip.graphics.clear();

   vertexRefs = new Dictionary(true);

   var tlp:Number3D = new Number3D(light.x, light.y, light.z);
   Matrix3D.multiplyVector(Matrix3D.inverse(target.world), tlp);

   var center:Number3D = new Number3D(tbounds.min.x+tbounds.size.x*0.5, tbounds.min.y+tbounds.size.y*0.5, tbounds.min.z+tbounds.size.z*0.5);


   var dif:Number3D = Number3D.sub(lp, center);
   dif.normalize();

   var other:Number3D = new Number3D();
   other.x = -dif.y;
   other.y = dif.x;
   other.z = 0;

   other.normalize();


   var cross:Number3D = Number3D.cross(new Number3D(plane.transform.n12, plane.transform.n22, plane.transform.n32), p3d.normal);
   cross.normalize();

   //cross = new Number3D(-dif.y, dif.x, 0);
   //cross.normalize();

   cross.multiplyEq(b.radius*scaleRadius);


   if(_type == DIRECTIONAL){
    var oPos:Number3D = new Number3D(target.x, target.y, target.z);
    Matrix3D.multiplyVector(target.world, oPos);
    Matrix3D.multiplyVector(inv, oPos);
    dir = new Number3D(oPos.x-lp.x, oPos.y-lp.y, oPos.z-lp.z);
   }

   //numberRefs = new Dictionary(true);
   var pos:Number3D;   
   var c2d:Point;
   var r2d:Point;

   //_type = SPOTLIGHT;
   pos = projectVertex(new Vertex3D(center.x, center.y, center.z), lp, inv, target.world);
   c2d = get2dPoint(pos, bounds.min, bounds.size, movieSize);

   pos = projectVertex(new Vertex3D(center.x+cross.x, center.y+cross.y, center.z+cross.z), lp, inv, target.world);
   r2d = get2dPoint(pos, bounds.min, bounds.size, movieSize);

   var dx:Number = r2d.x-c2d.x;
   var dy:Number = r2d.y-c2d.y;
   var rad:Number = Math.sqrt(dx*dx+dy*dy);

   castClip.graphics.beginFill(color);
   castClip.graphics.moveTo(c2d.x, c2d.y);
   castClip.graphics.drawCircle(c2d.x, c2d.y, rad);
   castClip.graphics.endFill();



  }

  public function getCastClip(plane:Plane):Sprite{

   var planeMovie:Sprite = Sprite(MovieMaterial(plane.material).movie);
   var movieSize:Point = new Point(planeMovie.width, planeMovie.height);
   var castClip:Sprite;// = new Sprite();
   if(planeMovie.getChildByName("castClip"+uid))
    return Sprite(planeMovie.getChildByName("castClip"+uid));
   else{
    castClip = new Sprite();
    castClip.name = "castClip"+uid;
    castClip.scrollRect = new Rectangle(0, 0, movieSize.x, movieSize.y);
    //castClip.alpha = 0.4;
    planeMovie.addChild(castClip);
    return castClip;
   }
  }

  public function castFaces(light:PointLight3D, target:TriangleMesh3D, plane:Plane, cull:Boolean=false, clear:Boolean = true):void{


   var planeVertices:Array = plane.geometry.vertices;

   //convert to target space?
   var world:Matrix3D = plane.world;
   var inv:Matrix3D = Matrix3D.inverse(plane.transform);

   var lp:Number3D = new Number3D(light.x, light.y, light.z);
   Matrix3D.multiplyVector(inv, lp);

   var tlp:Number3D;
   if(cull){
    tlp = new Number3D(light.x, light.y, light.z);
    Matrix3D.multiplyVector(Matrix3D.inverse(target.world), tlp);
   }
   //Matrix3D.multiplyVector(Matrix3D.inverse(target.transform), tlp);

   //p3d.setThreePoints(planeVertices[0].getPosition(), planeVertices[1].getPosition(), planeVertices[2].getPosition());
   p3d.setNormalAndPoint(plane.geometry.faces[0].faceNormal, new Number3D());

   if(_type == DIRECTIONAL){
    var oPos:Number3D = new Number3D(target.x, target.y, target.z);
    Matrix3D.multiplyVector(target.world, oPos);
    Matrix3D.multiplyVector(inv, oPos);
    dir = new Number3D(oPos.x-lp.x, oPos.y-lp.y, oPos.z-lp.z);
   }

   var bounds:Object = planeBounds[plane];
   if(!bounds){
    bounds = plane.boundingBox();
    planeBounds[plane] = bounds;
   }

   var castClip:Sprite = getCastClip(plane); 
    castClip.blendMode = this.blend;
    castClip.filters = this.filters;
    castClip.alpha = this.alpha;


   var planeMovie:Sprite = Sprite(MovieMaterial(plane.material).movie);
   var movieSize:Point = new Point(planeMovie.width, planeMovie.height);

   if(clear)
    castClip.graphics.clear();

   vertexRefs = new Dictionary(true);
   //numberRefs = new Dictionary(true);
   var pos:Number3D;   
   var p2d:Point;
   var s2d:Point;
   var hitVert:Number3D = new Number3D();

   for each(var t:Triangle3D in target.geometry.faces){

    if( cull){

     hitVert.x = t.v0.x;
     hitVert.y = t.v0.y;
     hitVert.z = t.v0.z;

     if(Number3D.dot(t.faceNormal, Number3D.sub(tlp, hitVert)) <= 0)
      continue;
    }

    castClip.graphics.beginFill(color);
    pos = projectVertex(t.v0, lp, inv, target.world);
    s2d = get2dPoint(pos, bounds.min, bounds.size, movieSize);
    castClip.graphics.moveTo(s2d.x, s2d.y);

    pos = projectVertex(t.v1, lp, inv, target.world);
    p2d = get2dPoint(pos, bounds.min, bounds.size, movieSize);
    castClip.graphics.lineTo(p2d.x, p2d.y); 

    pos = projectVertex(t.v2, lp, inv, target.world);
    p2d = get2dPoint(pos, bounds.min, bounds.size, movieSize);
    castClip.graphics.lineTo(p2d.x, p2d.y);

    castClip.graphics.lineTo(s2d.x, s2d.y);

    castClip.graphics.endFill();


   }

  }

  public function invalidate():void{
   invalidateModels();
   invalidatePlanes();
  }

  public function invalidatePlanes():void{
   planeBounds = new Dictionary(true);
  }
  public function invalidateTargets():void{
   numberRefs = new Dictionary(true);
   targetBounds = new Dictionary(true);
  }

  public function invalidateModels():void{
   models = new Dictionary(true);
   invalidateTargets();
  }

  private function get2dPoint(pos3D:Number3D, min3D:Number3D, size3D:Number3D, movieSize:Point):Point{
   return new Point((pos3D.x-min3D.x)/size3D.x*movieSize.x, ((-pos3D.y-min3D.y)/size3D.y*movieSize.y));
  }

  private function projectVertex(v:Vertex3D, light:Number3D, invMat:Matrix3D, world:Matrix3D):Number3D{

   var pos:Number3D = vertexRefs[v];
   if(pos)
    return pos;

   var n:Number3D = numberRefs[v];

   if(!n){
    n = new Number3D(v.x, v.y, v.z);
    Matrix3D.multiplyVector(world, n);
    Matrix3D.multiplyVector(invMat, n);
    numberRefs[v] = n;
   }


   if(_type == SPOTLIGHT){

    lightRay.x = light.x;
    lightRay.y = light.y;
    lightRay.z = light.z;  

   }else{
    lightRay.x = n.x-dir.x;
    lightRay.y = n.y-dir.y;
    lightRay.z = n.z-dir.z;
   }

   pos = p3d.getIntersectionLineNumbers(lightRay, n);
   vertexRefs[v] = pos;
   return pos;
  }

 }
}




package designLab.utils 
{
 public class LayerConstant 
 {
  public const INTRO:String = "INTRO"; // Intro layer string constant   
 } 
}*emphasized text*

© Stack Overflow or respective owner

Related posts about not-a-question